package com.rzcode.coinex.kernel.dao.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.rzcode.coinex.kernel.common.enums.AuditStateEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;


/**
 * 会员申请实体类，用于存储会员的实名认证申请信息。
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "member_application")
public class MemberApplication {

    /**
     * 申请ID，主键，自动生成的唯一标识。
     */
    @ApiModelProperty(value = "申请ID", required = true, example = "1")
    private Long id;

    /**
     * 真实姓名，申请人的真实姓名。
     */
    @ApiModelProperty(value = "真实姓名", required = true, example = "张三")
    private String realName;

    /**
     * 身份证号码，申请人的身份证号码。
     */
    @ApiModelProperty(value = "身份证号码", required = true, example = "123456199001011234")
    private String idCard;

    /**
     * 身份证正面图片，身份证正面的照片URL。
     */
    @ApiModelProperty(value = "身份证正面图片", required = true, example = "http://example.com/idcard_front.jpg")
    private String identityCardImgFront;

    /**
     * 身份证反面图片，身份证反面的照片URL。
     */
    @ApiModelProperty(value = "身份证反面图片", required = true, example = "http://example.com/idcard_reverse.jpg")
    private String identityCardImgReverse;

    /**
     * 手持身份证图片，申请人手持身份证的照片URL。
     */
    @ApiModelProperty(value = "手持身份证图片", required = true, example = "http://example.com/idcard_in_hand.jpg")
    private String identityCardImgInHand;

    /**
     * 审核状态，申请的审核状态（例如：待审核、审核通过、审核未通过）。
     */
    @ApiModelProperty(value = "审核状态", required = true, example = "PENDING")
    private AuditStateEnum auditStatus;

    /**
     * 审核信息所有者，与申请相关的会员信息。
     */
    @ApiModelProperty(value = "审核信息所有者", required = true)
    private Member member;

    /**
     * 驳回理由，如果申请被驳回，存储驳回的具体原因。
     */
    @ApiModelProperty(value = "驳回理由", example = "身份证信息不清晰")
    private String rejectReason;

    /**
     * 创建时间，记录申请创建的时间戳。
     */
    @ApiModelProperty(value = "创建时间", example = "2023-01-01 12:00:00")
    private Date createTime;

    /**
     * 更新时间，记录申请最后一次更新的时间戳。
     */
    @ApiModelProperty(value = "更新时间", example = "2023-01-01 12:00:00")
    private Date updateTime;
}
